package com.easylinkin.linkappapi.quality.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easylinkin.linkappapi.quality.dto.ActualMeasureInfoDTO;
import com.easylinkin.linkappapi.quality.dto.ActualMeasureTopDTO;
import com.easylinkin.linkappapi.quality.entity.ActualMeasureInfo;
import com.easylinkin.linkappapi.quality.entity.vo.ActualMeasureInfoVo;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;

/**
 * ActualMeasureInfo表数据库访问层
 *
 * @author zhengwen
 * @date 2022/09/01
 */
public interface ActualMeasureInfoMapper extends BaseMapper<ActualMeasureInfo> {


    /**
     * 查询分页
     *
     * @param page                        分页参数对象
     * @param appQualityActualMeasureInfo 过滤参数对象
     * @return 查询分页结果
     */
    IPage<ActualMeasureInfo> selectPage(Page page, @Param("appQualityActualMeasureInfo") ActualMeasureInfo appQualityActualMeasureInfo);

    /**
     * 查询单条
     *
     * @param id 主键id
     * @return 查询结果
     */
    ActualMeasureInfo getOneById(@Param("id") Serializable id);

    /**
     * 根据部位id查询这个节点的实测实量信息数量
     *
     * @param positionId 部位id
     * @return 实测实量信息数量
     */
    int selectCountByPositionId(Long positionId);

    /**
     * 分页查询dto数据
     *
     * @param page                分页查询参数
     * @param actualMeasureInfoVo 条件vo
     * @return dto数据
     */
    IPage<ActualMeasureInfoDTO> selectDtoPage(Page page, @Param("actualMeasureInfoVo") ActualMeasureInfoVo actualMeasureInfoVo);

    /**
     * 根据id查询实测实量信息dto
     *
     * @param id 主键
     * @return 实测实量dto
     */
    ActualMeasureInfoDTO selectOneDto(Long id);

    /**
     * Tab数量查询
     *
     * @param actualMeasureInfoVo
     * @return
     */
    int selectDtoPageCount(@Param("actualMeasureInfoVo") ActualMeasureInfoVo actualMeasureInfoVo);

    /**
     * 排行top
     *
     * @return
     */
    List<ActualMeasureTopDTO> selectTopByOrg(@Param("actualMeasureInfo") ActualMeasureInfo actualMeasureInfo);

    /**
     * 排行top 根据实测类型
     *
     * @return
     */
    List<ActualMeasureTopDTO> selectTopByType(@Param("actualMeasureInfo") ActualMeasureInfo actualMeasureInfo);

    /**
     * 根据条件查询这个节点的实测实量信息数量
     *
     * @param actualMeasureInfo 入参对象
     * @return 实测实量信息数量
     */
    int selectCountBy(ActualMeasureInfo actualMeasureInfo);
}

